BaseProtocolServer
协议服务器的基类(FIX,SBE等). 包含共享的基础设施:生命周期,会话,订阅,消息通道,背景任务.
继承自: BaseLogReceiver
实现: IProtocolServer, ILogReceiver, ILogSource, IDisposable
构造函数
protected BaseProtocolServer(TSettings settings)
baseProtocolServer = BaseProtocolServer(settings)
初始化一个新实例。
- settings
- 服务器设置 。
属性
protected LoginRateLimiter LoginRateLimiter { get; private set; }
value = baseProtocolServer.LoginRateLimiter
baseProtocolServer.LoginRateLimiter = value
登录尝试的速率限制器( 在所有听众中共享) 。
public IEnumerable<IMessageListenerSession> Sessions { get; }
value = baseProtocolServer.Sessions
活跃会话.
public ChannelStates State { get; protected set; }
value = baseProtocolServer.State
baseProtocolServer.State = value
获得基础状态存储.
方法
public void AddSubscription(ServerSubscription subscription)
baseProtocolServer.AddSubscription(subscription)
增加订阅.
- subscription
- 订阅.
protected string Convert(string value)
result = baseProtocolServer.Convert(value)
如果配置, 将文本转换为 latin 。
protected abstract TSubscription CreateSubscription(TClientSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = baseProtocolServer.CreateSubscription(session, requestId, subscription, type)
创建订阅信息实例 。
public void Disconnect(IMessageListenerSession session)
baseProtocolServer.Disconnect(session)
断开会话 。
- session
- 届会。
protected void EnqueueMessage(TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, requestId, handler, cancellationToken)
请求的ID 命令会议。
protected void EnqueueMessage(TSubscription subscription, TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, session, requestId, handler, cancellationToken)
核心入会:安排客户会话的工作.
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
多个订阅者的队列消息 。
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
多个订阅者的语句( 有 bul results) 。
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
单项订阅的队列消息 。
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
单项订阅的队列消息( 带有 bul results) 。
protected void EnqueueMessage(TClientSession session, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, handler, cancellationToken)
给会话的排队消息( 没有请求 ID) 。
protected abstract string GetSessionKey(TClientSession session)
result = baseProtocolServer.GetSessionKey(session)
获取用于分组客户端会话的密钥(e.g. SenderCompId) 。
public IEnumerable<ServerSubscription> GetSubscriptions(IMessageListenerSession session)
result = baseProtocolServer.GetSubscriptions(session)
获取指定会话的订阅 。
- session
- 届会。
返回值: 订阅.
public bool HasSubscriptions(DataType dataType, SecurityId securityId)
result = baseProtocolServer.HasSubscriptions(dataType, securityId)
Are there subscribers.
protected abstract bool IsStubSubscription(TSubscription subscription)
result = baseProtocolServer.IsStubSubscription(subscription)
检查订阅是否为分页( 位置持有者) 。
public override void Load(SettingsStorage storage)
baseProtocolServer.Load(storage)
装入设置 。
- storage
- 设置存储 。
protected abstract void OnClearListenerState()
baseProtocolServer.OnClearListenerState()
清除协议特定听众状态(停止听众等).
protected abstract void OnStartListeners(CancellationToken cancellationToken)
baseProtocolServer.OnStartListeners(cancellationToken)
Start protocol-specific listeners (TCP, etc.). Add tasks to _backgroundTasks.
protected abstract void ProcessInMessage(Message message, CancellationToken cancellationToken)
baseProtocolServer.ProcessInMessage(message, cancellationToken)
处理发送到订阅客户端的消息和路径 。
protected virtual void ProcessLogout(TClientSession session)
baseProtocolServer.ProcessLogout(session)
处理客户端的登录/断开连接.
protected void RaiseNewOutMessage(IMessageListenerSession session, Message message)
baseProtocolServer.RaiseNewOutMessage(session, message)
将发送的消息写入频道 。
protected void RaiseSessionConnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionConnected(session)
提高会话连接事件 。
protected void RaiseSessionDisconnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionDisconnected(session)
提升会话断开的事件 。
public bool RemoveSubscription(ServerSubscription subscription)
result = baseProtocolServer.RemoveSubscription(subscription)
删除订阅 。
- subscription
- 订阅.
返回值: ,否则。
public bool Resume(ServerSubscription subscription)
result = baseProtocolServer.Resume(subscription)
继续订阅。
- subscription
- 订阅.
返回值: ,否则。
public void Resume(IMessageListenerSession session)
baseProtocolServer.Resume(session)
复会.
- session
- 届会。
public IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>> RunAsync(CancellationToken cancellationToken)
result = baseProtocolServer.RunAsync(cancellationToken)
运行同步消息处理并返回发送的消息为 IAsyncEnumerable 。 打开服务器开始, 关闭结束 。
public override void Save(SettingsStorage storage)
baseProtocolServer.Save(storage)
保存设置 。
- storage
- 设置存储 。
protected abstract void ScheduleSessionWork(TClientSession session, ServerSubscription subscription, string requestId, Func<TClientSession, string, CancellationToken, ValueTask<bool>> handler)
baseProtocolServer.ScheduleSessionWork(session, subscription, requestId, handler)
客户端会话的出行队列的进度安排 。
public virtual bool SendInMessage(Message message)
result = baseProtocolServer.SendInMessage(message)
将收到的邮件发送到服务器,以便处理和路由给客户端.
protected void StartServer(CancellationToken cancellationToken)
baseProtocolServer.StartServer(cancellationToken)
启动服务器:初始化状态,启动听众和背景任务.
public void Suspend(IMessageListenerSession session)
baseProtocolServer.Suspend(session)
暂停会话。
- session
- 届会。
public bool Suspend(ServerSubscription subscription)
result = baseProtocolServer.Suspend(subscription)
暂停订阅 。
- subscription
- 订阅.
返回值: ,否则。
事件
public event Action<IMessageListenerSession> SessionConnected
baseProtocolServer.SessionConnected += handler
会话连接事件 。
public event Action<IMessageListenerSession> SessionDisconnected
baseProtocolServer.SessionDisconnected += handler
会话断开事件 。
public event Action<ServerSubscription> SubscriptionChanged
baseProtocolServer.SubscriptionChanged += handler
客户订阅更改事件 。
字段
protected readonly List<Task> _backgroundTasks
value = baseProtocolServer._backgroundTasks
背景任务(接受客户端,处理消息等).
protected readonly SynchronizedSet<long> _cancellationRequests
value = baseProtocolServer._cancellationRequests
等待取消订单 请求交易身份 。
protected readonly SynchronizedSet<ServerSubscription> _changedSubscriptions
value = baseProtocolServer._changedSubscriptions
更改订阅,等待通知。
protected readonly CachedSynchronizedDictionary<string, CachedSynchronizedList<TClientSession>> _clientSessions
value = baseProtocolServer._clientSessions
按会话键分组的客户会话(e.g. SenderCompId.).
protected readonly Channel<Message> _incomingMessages
value = baseProtocolServer._incomingMessages
来电消息频道.
protected readonly Channel<ValueTuple<IMessageListenerSession, Message>> _outgoingMessages
value = baseProtocolServer._outgoingMessages
正在发送消息通道(会话+消息对).
protected readonly SubscriptionHolder<TSubscription, TClientSession> _subscriptions
value = baseProtocolServer._subscriptions
订阅机持有者.